package com.tedu.api.io;

import com.sun.javafx.image.BytePixelSetter;
import org.junit.Test;

import java.io.File;
import java.io.IOException;

/**包位置；java.io
 *File  表示  文件或者文件夹【存在硬盘】
 *测试：io包下创建文件 demo.txt
 *验证项目下是否存在文件demo.txt
 * File file=new File("传入路径")
 * 构造器：传入路径   /  \都表示路径
 *                 /  表示路径，文件下载--本次测试
 *                 \   表示路径，文件的上传【服务器】--网络
 * File文件/文件夹可以做什么：【常用方法】
 *1.查看文件或者文件夹的属性信息（名字，大小，判断文件是否存在 等）
 *2.操作文件或者文件夹（创建，删除等）
 *3.访问一个目录的子项（访问文件夹下的文件夹操作）
 */
public class FileAPI {
    @Test
    public void testFile(){
     //项目结构C/S架构--Maven---查路径--通过idea查路径
     //找到需要查找文件夹/文件--右键--打开于--Explorer
     //src\main\java\com\tedu\api\io   char c='\\'   转义成路径
     //编写Java代码--任何操作平台运行---路径--封装：静态属性
     //Java编写\\ 情况-->
     // File.separator   静态属性可以在任何平台上转义成对应路径
        File file=new File("src"+File.separator+
                "mai"+"n"+File.separator+
                "jav"+"a"+File.separator+
                "co"+"m"+File.separator+
                "ted"+"u"+File.separator+
                "api"+File.separator+
                "i"+"o"+File.separator+
                "demo.txt");
        //验证：demo.txt文件是否存在
        boolean b=file.exists();
        System.out.println("测试demo txt是否存在"+b);
    }

    /**
     *getName() 返回值String
     * 获取文件/文件夹的名字【注意：不管file是否存在，只会拿名】
     *length()  返回值long
     * 返回当前文件的大小(字节量)--汉字：三个字节量
     * exists()   返回值 boolean
     * 判断file文件是否存在，存在true，反之false
     */
    @Test
    public void testGLE(){
        File file=new File("src"+File.separator+
                "mai"+"n"+File.separator+
                "jav"+"a"+File.separator+
                "co"+"m"+File.separator+
                "ted"+"u"+File.separator+
                "api"+File.separator+
                "i"+"o"+File.separator+
                "demo.txt");
         String str=file.getName();
        System.out.println("file文件的名字是"+str);
        long length= file.length();
        System.out.println("file文件字节量是"+length);
    }
    /**
     * 操作文件或者文件【创建删除】
     *createNewFile
     *创建新文件  创建不成功 不成功抛出IO流异常
     */
    @Test
    public void testCreateNewFile() throws IOException {
        //需求：用程序创建一个文件：test.txt
        File file=new File("."+File.separator+"test.txt");

         //创建text.txt--判断当前文件夹下是否存在，存在--不创建
        //                                   不存在--创建
        if(!file.exists()){
            //创建文件
            System.out.println("文件是不存在");
            file.createNewFile();
            System.out.println("文件创建完毕");
        }else {}
        System.out.println("文件是存在的 不创建");
    }
    /**
     * 拓展：存放文件位置:  Maven项目：main程序入口
     *                             test程序测试
     *      查找：main下或者test下，必须从src位置开始找
     *      -----------
     *     .代表当前项目下
     */
@Test
    public void testPath() throws IOException {
    //"FileAPI.java"相对于项目名"API"

    File file=new File("."+File.separator+"1");
    //查看file路径
    //System.out.println(file.getCanonicalPath());
    System.out.println("API项目路径下文件是否存在"+file.exists());
}
/**文件删除操作
 * delete
 * 删除以及创建完毕的文件
 */
@Test
    public void testDelete(){
    //创建File
    File file=new File("."+File.separator+"test.txt");
    //  删除  如果有文件  删除  没有 不删
    if (file.exists()){
        System.out.println("有文件");
        file.delete();
        System.out.println("文件删除成功");
    }else{
        System.out.println("文件没有，不删了");
    }
}
    /**
     *mkdir
     *在当前项目下创建一个【目录；文件夹】
     *mkdirs()
     * 创建多层【目录：文件夹】
     */
    @Test
    public void testMkdir(){
        //创建文件夹---创建在API文件下demo文件夹--->abc文件夹-->bcd文件夹
        File file=new File("."+File.separator+"demo" +
                ""+File.separator+"abc"+File.separator+"bcd");
        //创建文件夹---如果没有文件夹 创建|有 不创建
        if (!file.exists()){
            System.out.println("没有文件夹");
            file.mkdirs();
            System.out.println("创建成功");
        }else{
            System.out.println("已经存在了别创建了");
        }
    }
    /**
     * isDirectory() 判断是否是目录，返回true
     * isFile()  判断是否是文件，返回true
     * ListFiles   返回值：数组----File【】
     * 获取当前目录下所有子项【包含：文件，文件夹】
     */
    @Test
    public void testListFiles(){
        //需求：获取当前"API"  文件夹 下  所有的文件、文件夹
        File file=new File(".");
        //获取 文件夹
        if(file.isDirectory()){
            //获取文件夹---子项
            File[] files=file.listFiles();
            //打印获取到的文件夹名字
            for(int i=0;i< files.length;i++){
                System.out.println(files[i]);
            }
        }
    }




}
